package com.ofps.flow.service;

import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ofps.flow.domain.Dto.FlowInfoInstDto;
import com.ofps.flow.domain.EnterFlowInfoInst;
import com.ofps.flow.domain.EnterFlowNodeInst;
import com.ofps.forms.common.utils.R;

/**
 * 流程实例Service接口
 *
 * @author ofps
 * @date 2022-06-01
 */
public interface IEnterFlowInfoInstService extends IService<EnterFlowInfoInst> {

    /**
     * 查询流程实例列表
     *
     * @param enterFlowInfoInst 流程实例
     * @return 流程实例集合
     */
    public List<EnterFlowInfoInst> selectEnterFlowInfoInstList(EnterFlowInfoInst enterFlowInfoInst);

    /**
     * 根据用户id
     * 查询flow_info_inst
     *
     * @param params
     * @return
     */
    R queryByUserId(FlowInfoInstDto params);

    /**
     * 获取我的申请-详情数据
     * @param jsonObject 请求参数
     * @return 我的申请-详情数据
     */
    JSONObject findInstDetail(JSONObject jsonObject);

    /**
     * 获取流程模型接口
     * @param jsonObject 请求参数
     * @return 流程模型数据
     */
    JSONObject getFlowInfoWithNode(JSONObject jsonObject);

    /**
     * 建立流程实例接口
     *
     * @return 成功或失败
     */
    void insertFlowInst(JSONObject jsonObject);

    //查询答案
    R queryAnswer(Integer questionType, String questionId, String flowInstId);

    //审批
    R review(Integer op, EnterFlowInfoInst flowInst, EnterFlowNodeInst nodeInst);
}
